1. Field of the Invention
This invention relates to data processing systems employing virtual memory partitioned into pages, and, more specifically, to a means for permitting Input/output (I/O) device adapters to use virtual addressing in specifying memory locations participating in an I/O data transfer.
2. Description of the Prior Art
Virtual addressing, the ability to address a large virtual space of data with an address as if the data were all contained in main storage, when the data may actually reside on a secondary storage device, rather than in main storage, has been used in central processing units (CPU's) for some time. However, I/O device adapters have not used virtual addresses until recently. When an I/O adapter references a location as a part of a data transfer, the I/O adapter may use an address for the location which could be virtual or real. As long as the data referenced by the address is actually present in main storage, there would be no difference in operation by the I/O adapter between a virtual address and a real address (other than the need to convert the virtual address into a main storage address) because the data referenced is available for immediate access.
When the data referenced by a virtual address is not in main storage, however, some means must be used to inform the I/O adapter that the data is not yet in main storage and must be brought in from a secondary storage device. The I/O adapter must also be informed by the CPU when the data actually becomes available in main storage. The delay caused by waiting for the data to come in from main storage may cause the channel and/or the I/O adapter to be held in an unproductive state.
Accordingly, the basic problem with providing I/O adapters with virtual addressing capability concerns situations where page faults occur, i.e. the adapter references a page not present in main storage. In some cases, such as data communications, such faults must be avoided by resolving addresses in advance. In most other cases, such faults may be allowed to occur, but the channel, the I/O addapter and other resources should not be tied up needlessly while waiting for the address to be resolved.
In one known prior art arrangement, disclosed in U.S. Pat. No. 3,898,623, issued to Cormier, I/O data transfer operations which encounter a page fault, due to a referenced virtual memory page not being present in main storage, are suspended. When the page fault has been resolved by bringing the referenced page into main storage, the operation is resumed. A separate restart instruction issued by the CPU is used to resume the operation. The I/O adapter causing the page fault remains suspended until restarted by the CPU. Moreover, the suspended I/O adapter may not request service from the CPU, but must wait until the CPU can issue the restart instruction.